package com.dearbinge.utils;

import java.math.BigDecimal;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 价格工具类
 *
 * @author wes
 * @date 2019/1/23
 */
public class PriceUtils {


    /**
     * 校验价格
     *
     * @param price 非String类型的数据,可以通过重载 拓展校验的方法
     * @return 校验结果
     */
    public static boolean checkPrice(BigDecimal price) {
        if (price  == null) {
            return false;
        }
        //价格范围 大于零 小于等于一百万
        BigDecimal maxPrice = BigDecimal.valueOf(999999999);
        BigDecimal minPrice = BigDecimal.valueOf(0);
        boolean flag = price.compareTo(maxPrice) >0 || price.compareTo(minPrice) < 0 || price.compareTo(minPrice) == 0;

        if (flag) {
            return false;
        }
        String regex = "((^[1-9]\\d*)|^0)(\\.\\d{0,2}){0,1}$";
        //将给定的正则表达式编译到模式中。
        Pattern pattern = Pattern.compile(regex);
        //创建匹配给定输入与此模式的匹配器。
        Matcher isNum = pattern.matcher(price.toString());
        //如果匹配成功，则可以通过 start、end 和 group 方法获取更多信息.
        return isNum.matches();
    }

    /**
     * 比较价格
     *
     * @param firstPrice 第一个价格
     * @param secondPrice 第二个价格
     * @return 校验结果
     */
    public static boolean comparePrice(BigDecimal firstPrice,BigDecimal secondPrice) {
       //成本价大于零售价 错误
        boolean flag = firstPrice.compareTo(secondPrice) > 0;
        if (flag) {
            return false;
        }
        return true;
    }

    /**
     * 比较价格是否相等
     *
     * @param firstPrice 第一个价格
     * @param secondPrice 第二个价格
     * @return 校验结果
     */
    public static boolean checkEqualPrice(BigDecimal firstPrice,BigDecimal secondPrice) {
        boolean flag = firstPrice.compareTo(secondPrice) == 0;
        if (!flag) {
            return false;
        }
        return true;
    }
}
